﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using Mapeo;
using NHibernate;

namespace DAL
{
    public class Academico_DAL:Controlador
    {

        public DataTable DATA_NOTAS_ListaDesaprobados_AGRUPA(String nombre_codigo, string flag,string semestre,string ciclo)
        {
            //Lista todas las especialidades de la tabla data_notas

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_NOTAS_ListaDesaprobados2";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_codigo_nombre",nombre_codigo);
                Comnota3.Parameters.AddWithValue("@flag_tipo",flag);
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_ciclo", ciclo);
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;

        }


        public DataTable DATA_NOTAS_Ficha_Rendimiento_Academico(String codigo)
        {
            //Lista todas las especialidades de la tabla data_notas

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_NOTAS_Ficha_Rendimiento_Academico";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_codigo", codigo);
                
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;

        }



        public DataTable DATA_PROMEDIOS_LISTAXCODIGO(String codigo)
        {
            //Lista todas las especialidades de la tabla data_notas

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_PROMEDIOS_LISTAXCODIGO";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_codigo", codigo);

                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;

        }




        public void DATA_NOTAS_ACTUALIZA_FLAG_COMPLEMENTARIO()
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand cmd = new MySqlCommand();
            MySqlConnection conexion = new MySqlConnection();

            cadena = conex.ConexionCampusVirtual();
            conexion.ConnectionString = cadena;

            try
            {
                conexion.Open();

                cmd.CommandText = "sp_DATA_NOTAS_ACTUALIZA_FLAG_COMPLEMENTARIO";
                cmd.Connection = conexion;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandTimeout = 3600;
                cmd.ExecuteNonQuery();



            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                conexion.Close();
                cmd.Dispose();
            }




        }

        public void ActualizarPeriodo(String codigo,String especialidad, Int32 ciclo)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    try
                    {
                        IQuery query = (IQuery)Sesion.GetNamedQuery("Cursor_Actulizar_Periodos");
                        query.SetParameter("In_Ciclo", ciclo);
                        query.SetParameter("In_CodigoAlumno", codigo);
                        query.SetParameter("In_Especialidad", especialidad);
                        query.List();
                        Trans.Commit();
                    }
                    catch (Exception)
                    {
                        Trans.Rollback();
                        throw;
                    }
                }
            }
        }


        public DataTable ObtenerFichaRendimientoAlumnoEspecialidad(String Nombre, String Especialidad)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "sp_ObtenerFichaRendimientoAlumnoEspecialidad";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@in_codigo", Nombre);
                    SqlCmd.Parameters.AddWithValue("@in_especialidad", Especialidad);


                    SqlCmd.ExecuteNonQuery();
                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }



        public DataTable ObtenerPromediosAlumnoEspecialidad(String Nombre, String Especialidad)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "sp_ObtenerPromediosAlumnoEspecialidad";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@in_codigo", Nombre);
                    SqlCmd.Parameters.AddWithValue("@in_especialidad", Especialidad);


                    SqlCmd.ExecuteNonQuery();
                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }



    }
}
